package reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ReflectDemo3 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //new Person("李四")
        Class cls = Class.forName("reflect.Person");
        /*
        反射对象：
        Class             类对象，它的每个实例用于表示一个类，它包含类的所有结构信息，包括构造器，字段，方法等。
        Constructor       构造器对象，它的每个实例
        * */
        //Constructor con = cls.getConstructor();不传参，获取的是无参构造，Person（）
        //Person(String)
        Constructor con = cls.getConstructor(String.class);
        //new Person("李四")
        Object obj = con.newInstance("李四");
        System.out.println(obj);

        //Person(String, int)
        Constructor con1 = cls.getConstructor(String.class,int.class);
        Object obj1 = con1.newInstance("王五",20);
        System.out.println(obj1);
    }
}
